HyperLPR车牌识别(python/c++) cpu版

您所在的位置:网站首页 黄牌 蓝牌 绿牌 HyperLPR车牌识别(python/c++) cpu版

HyperLPR车牌识别(python/c++) cpu版

2024-07-02 12:29| 来源: 网络整理| 查看: 265

算法介绍 HyperLPR是一个基于深度学习的高性能中文车牌识别开源项目,github地址是 https://github.com/szad670401/HyperLPR (C++版本),https://github.com/zeusees/HyperLPR(python版本) 如果下载不了,在gitee输入HyperLPR就会看到相关代码。或者百度网盘链接:https://pan.baidu.com/s/1ZzGwCSFLbr_sCiN1ZLGdzw?pwd=1234 提取码:1234 分别由C++和python语言编写,同时还支持Linux、Android、iOS、Windows、英伟达NX、RK3588等各主流平台。它拥有不错的识别率,目前已经支持的车牌类型包括 单行蓝牌、 单行黄牌、 新能源车牌、 白色警用车牌、 使馆/港澳车牌、 教练车牌

这个算法的检测大概流程如下:

a、使用opencv的HAAR Cascade检测车牌大致位置 b、Extend检测到的大致位置的矩形区域 c、使用类似于MSER的方式的多级二值化和RANSAC拟合车牌的上下边界 d、使用CNN Regression回归车牌左右边界 e、使用基于纹理场的算法进行车牌校正倾斜 f、使用CNN滑动窗切割字符 g、使用CNN识别字符

python版本 如果想直接安装包,可以不去github下载代码,直接安装直接使用) 创建一个虚拟环境(也可以不创建,看个人) 主要库有opencv和HyperLPR

// 创建虚拟环境,python版本可以3.6+, conda create -n HyperLPR python=3.8 //激活环境 conda activate HyperLPR //安装HyperLPR库,如果下载慢可以使用下面的源或者其清华源或者其他的源 python -m pip install hyperlpr3 //安装opencv的python版本 pip install opencv_contrib_python -i http://pypi.douban.com/simple

注:如果安装失败,可以更新一下pip版本 python -m pip install --upgrade pip

测试HyperLPR: 可以直接使用命令行,进入安装了HyperLPR包的环境下

// image url lpr3 sample -src https://koss.iyong.com/swift/v1/iyong_public/iyong_2596631159095872/image/20190221/1550713902741045679.jpg // image path //本地目录 lpr3 sample -src images/test_img.jpg -det high

代码测试:

import cv2 import hyperlpr3 as lpr3 catcher = lpr3.LicensePlateCatcher() # load image image = cv2.imread("images/test_img.jpg") # print result print(catcher(image))

C++版本(Linux) 准备工作 1、在编译库之前需要提前准备好以编译的工作环境,需要依赖如下: CMake(3.10 以上) OpenCV (4.20以上) 编译对应的平台如android、ios、linux都需要采用各自平台支持的OpenCV-SDK MNN (2.0.0以上) C++编译器 GCC或Clang皆可 (macOS无需另外安装,Xcode自带) GCC推荐版本4.9以上 在某些发行版上GCC (GNU C编译器)和G++(GNU C++编译器是分开安装的)。 同样以Ubuntu为例,需要分别安装 gcc 和 g++ Clang 推荐版本3.9以上 Catch2(仅编译TestCase需要)

2、拉取项目 从github或gitee中拉取最新版的HyperLPR工程到本地

git clone https://github.com/szad670401/HyperLPR.git

网络不太稳的同学可以使用gitee拉取项目

git clone https://gitee.com/tunmx/HyperLPR.git

安装CMake

sudo apt-get install cmake

MacOS可使用brew进行快捷安装:

sudo brew install cmake

HyperLPR根目录

HyperLPR/ ├── 3rdparty_hyper_inspire_op # 放这里 ├── CMakeLists.txt ├── LICENSE ├── Prj-Android ├── Prj-Linux ├── Prj-Python ├── README.md ├── build ├── cmake-build-debug ├── command ├── cpp ├── docs ├── images └── resource

x86架构的(AMD和英特尔芯片是x86),有外网的,直接安装就可以成功

//执行编译脚本 sh command/build_release_linux_share.sh

编译后的相关物料放置于根目录下build/linux/install/hyperlpr3中,其中包含: include 头文件 lib 动态库路径 resource 包含测试图片与模型等静态资源 按需取走需要的文件即可

编译好动态链接库后,我们提供了一个使用Demo,即根目录下的Prj-Linux文件夹,在编译完成上面的动态库后即可进入到该目录下进行测试,该demo仅体现SDK最简单的使用方式,代码如下:

#include #include "hyper_lpr_sdk.h" #include "opencv2/opencv.hpp" static const std::vector TYPES = {"蓝牌", "黄牌单层", "白牌单层", "绿牌新能源", "黑牌港澳", "香港单层", "香港双层", "澳门单层", "澳门双层", "黄牌双层"}; int main(int argc, char **argv) { char *model_path = argv[1]; char *image_path = argv[2]; // 读取图像 cv::Mat image = cv::imread(image_path); // 创建ImageData HLPR_ImageData data = {0}; data.data = image.ptr(0); // 设置图像数据流 data.width = image.cols; // 设置图像宽 data.height = image.rows; // 设置图像高 data.format = STREAM_BGR; // 设置当前图像编码格式 data.rotation = CAMERA_ROTATION_0; // 设置当前图像转角 // 创建数据Buffer P_HLPR_DataBuffer buffer = HLPR_CreateDataBuffer(&data); // 配置车牌识别参数 HLPR_ContextConfiguration configuration = {0}; configuration.models_path = model_path; // 模型文件夹路径 configuration.max_num = 5; // 最大识别车牌数量 configuration.det_level = DETECT_LEVEL_LOW; // 检测器等级 configuration.use_half = false; configuration.nms_threshold = 0.5f; // 非极大值抑制置信度阈值 configuration.rec_confidence_threshold = 0.5f; // 车牌号文本阈值 configuration.box_conf_threshold = 0.30f; // 检测器阈值 configuration.threads = 1; // 实例化车牌识别算法Context P_HLPR_Context ctx = HLPR_CreateContext(&configuration); // 查询实例化状态 HREESULT ret = HLPR_ContextQueryStatus(ctx); if (ret != HResultCode::Ok) { printf("create error.\n"); return -1; } HLPR_PlateResultList results = {0}; // 执行车牌识别算法 HLPR_ContextUpdateStream(ctx, buffer, &results); for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3